//  app   application  应用程序
//  把当前模块所有的依赖项声明在文件模块最上面
// 我们未来方便的统一处理这些静态资源，我们约定把所有的静态资源存放在public目录中


var http = require('http')
var fs = require('fs')
var template = require('art-template')
var url= require('url')

var comments = [
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    },
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    },
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    },
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    },
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    },
    {
        name:'张三',
        message:'今天天气不错',
        dateTime:'2018-9-10'
    }
]

//  对于这种表单提交的请求路径，由于其中有用户动态填写的内容
//  所以你不可能通过去判断完整的 url 路径来处理这个请求

// var server = http.createServer()
//
// server.on('request',function (err,data) {
//
// })
// server.listen(3000,function () {
//     console.log('Server is Running')
// })

http.createServer(function (req,res) {
    var pathObj = url.parse(req.url,true)

    //单独获取不包含查询字符串的路径部分
    var pathname = pathObj.pathname
    if (pathname === '/') {
        fs.readFile('./views/index.html', function (err, data) {
            if (err) {
                return res.end('404 Not Found.')
            }
            var htmlStr = template.render(data.toString(), {
                comments: comments
            })
            res.end(htmlStr)
        })
    } else if (pathname === '/post') {
        // 其它的都处理成 404 找不到
        fs.readFile('./views/post.html', function (err, data) {
            if (err) {
                return res.end('404 Not Found.')
            }
            res.end(data)
        })
    } else if (pathname.indexOf('/public/') === 0) {
        // /public/css/main.css
        // /public/js/main.js
        // /public/lib/jquery.js
        // 统一处理：
        //    如果请求路径是以 /public/ 开头的，则我认为你要获取 public 中的某个资源
        //    所以我们就直接可以把请求路径当作文件路径来直接进行读取
        fs.readFile('.' + pathname, function (err, data) {
            if (err) {
                return res.end('404 Not Found.')
            }
            res.end(data)
        })
    }else if(pathname === '/pinglun'){
        //  注意：  这个时候无论url？后面有任何东西，我都不需要担心了，因为我的pathname是问号之前的
        // res.end(JSON.stringify(pathObj.query))
        //  一个请求对应一次响应,响应结束

        var comment = pathObj.query
        comment.dateTime = '2017-11-2'
        comments.unshift(comment)
        // 服务器这个时候已经把数据储存好了

        //如何通过服务器让客户端重定向？
        // 1. 状态 码设置为 302 临时重定向
        //     statusCode
        // 2.在响应头中  通过 location 告诉客户端往哪里重定向
        //     setHeader
        //  如果客户端发现收到服务器的响应状态码是302  就会自动去响应头中找location ,重新发送请求
        // 所以你能看到的客户端就自动跳转了
        res.statusCode = 302
        res.setHeader('Location','/')
        res.end()

    } else {
        // 其它的都处理成 404 找不到
        fs.readFile('./views/404.html', function (err, data) {
            if (err) {
                return res.end('404 Not Found.')
            }
            res.end(data)
        })
    }
})
.listen(3000,function () {
    console.log('Server is Running')
})



